// const fs = require('fs')
const path = require('path')
// const cors = require('cors')
// const https= require ('https')
const swagger1 = require('./config/swagger1')
const swagger2 = require('./config/swagger2')
const express = require('express')
// 参考文档 https://www.runoob.com/w3cnote/express-4-x-api.html
const app = express()

// const options = {
//   pfx: fs.readFileSync(path.join(__dirname, 'server.pfx')),
//   passphrase: '123456'
//   //--
//   // key: fs.readFileSync(path.join(__dirname, '../cert/a.key')),
//   // cert: fs.readFileSync(path.join(__dirname, '../cert/a.pem'))
//   };

// //options有两个选项，一个是证书本体，一个是密码（刚刚的IIS文件夹的keystorePass.txt文件中）
// const server = https.createServer(options,app);

app.use('/', express.static(path.join(__dirname, '../static')))
// express.json()函数是Express中的内置中间件函数
// 它使用body-parser解析带有JSON有效负载的传入请求 解析后req.body.参数名  就可以直接使用
// 参考https://vimsky.com/examples/usage/express-js-express-json-function.html
// curl -X POST "http://localhost:8082/demo/hello2" -H "accept: application/json" -d "id=id222&name=name1"
// 获取Post请求的参数，需要设置body解析中间件
app.use(express.urlencoded({ extended: false }))
app.use(express.json())

// 设置跨域请求
// const corsOptions = {
//   origin: '*'
// }

// app.use(cors(corsOptions))

// 统一响应格式https://www.csdn.net/tags/OtDaUgysODAyNDgtYmxvZwO0O0OO0O0O.html

/* 自定义中间件 */

// 可以用use/all来实现访问页面404处理
// 上面所有的请求如果都没有匹配成功，则*全部匹配成功
/*
app.all('/demo/*', (req, res, next) => {
  // console.log(req)
  // req.testing = 'testing'
  // 在这里验证token
  console.log(new Date().toISOString(), ' ', 'Authorization:', req.get('Authorization'))
  console.log('res Content-Type:', req.get('Content-Type'))
  const token = req.get('Authorization')
  if (token === '111') {
    return next()
  } else {
    res.status(403)
    res.end()
  }
  // console.log(res.header('Content-Type'))
})
*/
/*
app.use(function (req, res, next) {
  // console.log(req)
  // req.testing = 'testing'
  // 在这里验证token
  console.log(new Date().toISOString(), ' ', 'Authorization:', req.get('Authorization'))
  console.log('res Content-Type:', req.get('Content-Type'))
  const token = req.get('Authorization')
  if (token === '111') {
    return next()
  } else {
    res.status(403)
    req.end()
  }
  // console.log(res.header('Content-Type'))

  //   if(req.get('content-type').indexOf ('application/json')>=0){
  // console.log(req.path,'==>',res)
  //   }
  // 添加一个自定义函数可用
  // res.ok = res.json
})
*/

// 获取所有路由
const routersInit = require('./router/index')
// 初始化路由
routersInit(app)
const PORT = 8082
const env = process.env.NODE_ENV
if (env === 'dev') {
  swagger1(app, PORT)
  swagger2(app, PORT)
}
const server = app.listen(PORT, function () {
  console.log('env------------->', process.env.AAA)
  const host = server.address().address
  const port = server.address().port
  console.log('应用实例，访问地址为 http://%s:%s', host, port)
})
